
package cn.spdb.harrier.common.log;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

public class WorkerLogFilter extends Filter<ILoggingEvent> {

	private Level level = Level.INFO;

	public void setLevel(String level) {
		this.level = Level.toLevel(level);
	}

/**
 * 根据日志事件的线程名或记录器名称是否以 "Worker" 开头，并结合日志级别，
 * 决定是否接受该日志事件。
 *
 * 如果日志事件满足以下两个条件：
 * 1. 线程名或记录器名以 "Worker" 开头；
 * 2. 日志级别大于等于设定的过滤级别（如 INFO）；
 * 则允许该日志通过；否则拒绝输出。
 *
 * @param event 日志事件对象
 * @return FilterReply.ACCEPT 表示接受该日志，FilterReply.DENY 表示拒绝
 */
@Override
public FilterReply decide(ILoggingEvent event) {
    if ((event.getThreadName().startsWith("Worker")
            || event.getLoggerName().startsWith("Worker"))
            && event.getLevel().isGreaterOrEqual(level)) {
        return FilterReply.ACCEPT;
    }
    return FilterReply.DENY;
}


}